In today's society, computers are ubiquitous. For example, computers may be found in grocery stores, automobiles, airplanes, and watches. Often computers include a processor that executes various functions such as mathematical computations, running programs, and retrieving and storing information. A processor that retrieves and stores information may use a storage device such as a disk drive (e.g., hard disk) or memory. Generally, memory devices store information in binary form—i.e., 1s and 0s. Binary information may be stored by assigning differing voltage states to binary values. For example, a binary 0 may be assigned 0 volts, while a binary 1 may be assigned 5 volts. Traditionally, memory devices have been implemented using transistors configured to form logic gates that are able to store binary values. However, recent trends include memory devices implemented using an array of magnetic elements that are constructed using semiconductor processing techniques.
One embodiment of an array of magnetic memory elements may comprise individual magnetic memory elements formed by using two layers of magnetic material that have adjustable magnetic orientations. The magnetic materials may be formed with an insulating layer sandwiched between them. Because the magnetic materials are designed to be adjustable, the magnetic field for each material may be adjusted by applying electrical current in proximity to them. The orientations of two magnetic layers may be in the same direction (termed “parallel”), or they may be opposite each other (termed “anti-parallel”).
Each magnetic memory element may also have an electrical resistance. The electrical resistance of the magnetic memory element may vary depending on the parallel or anti-parallel orientation of its magnetic fields. For example, parallel orientation may yield a resistance of 1 MΩ whereas anti-parallel orientation may produce a resistance of 1.1 MΩ. Because the resistance of the magnetic memory element may be changed, binary values (e.g., 1s and 0s) may be associated with the electrical resistance.
To determine the resistive value of a memory element, which effectively determines the binary or digital value contained therein, a voltage is developed across the memory element. Using this voltage, or alternately a current derived from this voltage, the resistance value of the memory element may be estimated, and the digital value stored in the memory element may be determined.
For one or more reasons, estimations for the resistive value of an individual memory element within the memory array may be inaccurate, which may then cause the digital value to be inaccurately determined. One reason for the inaccuracies of the resistance estimation is that the memory elements within the array are coupled to each other. As a result, the resistance estimation for one memory element may be affected by the resistance of not only the desired memory element, but also the resistance associated with memory elements which are coupled to the desired memory element.